// 控制应用生命周期和创建原生浏览器窗口的模组
import { app, BrowserWindow } from 'electron'
import path from 'path'
import { electronEnvironment, loadFileUrl, devUrl } from '../config/electronConfig'
import WinState from "electron-win-state"
import { useTestHandle } from '../handles/testHandle'
// 禁用当前应用程序的硬件加速
// app.disableHardwareAcceleration()
function createWindow() {

  //保存上一次窗口状态插件
  const winState = new WinState({
    defaultWidth: 1600,
    defaultHeight: 1024
  })

  // 创建浏览器窗口
  const mainWindow = new BrowserWindow({
    //使用窗口状态插件代替默认宽高
    ...winState.winOptions,

    webPreferences: {
      preload: path.join(__dirname, '../preload/index.js')
    }
  })
  console.log('electronEnvironment：', electronEnvironment)
  mainWindow.loadURL(electronEnvironment === 'build' ? loadFileUrl : devUrl)


  // 打开开发工具
  mainWindow.webContents.openDevTools()
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
  createWindow()

  app.on('activate', function () {
    // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
    // 打开的窗口，那么程序会重新创建一个窗口。
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在
// 任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

useTestHandle();